//给定一个 没有重复 数字的序列，返回其所有可能的全排列。 
//
// 示例: 
//
// 输入: [1,2,3]
//输出:
//[
//  [1,2,3],
//  [1,3,2],
//  [2,1,3],
//  [2,3,1],
//  [3,1,2],
//  [3,2,1]
//] 
// Related Topics 回溯算法 
// 👍 1286 👎 0

package com.xiaohujr.xuexue.leetcode.editor.cn;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Q46 {
    public static void main(String[] args) {
        Solution solution = new Q46().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();

        List<Integer> output = new ArrayList<>();
        for(int num:nums){
            output.add(num);
        }

        int n = nums.length;

        return res;

    }

    public void backtrack(int n,
                          List<Integer> output,
                          List<List<Integer>> res,
                          int first){
        if(first==n){
            res.add(new ArrayList<Integer>(output));
        }
        for(int i = first;i<n;i++){
            Collections.swap(output,first,i);
            backtrack(n,output,res,first+1);
            Collections.swap(output,first,i);
        }
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}

